home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / utility / v11n02.zip / RECORD3.C < prev    next >
C/C++ Source or Header  |  1991-09-19  |  6KB  |  155 lines

  1. /*---------------------------------------------------------
  2.    RECORD3.C -- Multimedia Windows Waveform Audio Recorder
  3.                 (c) Charles Petzold, 1991
  4.   ---------------------------------------------------------*/
  5.  
  6. #include <windows.h>
  7. #include <mmsystem.h>
  8. #include <stdio.h>
  9. #include "record3.h"
  10.  
  11. BOOL FAR PASCAL DlgProc (HWND, WORD, WORD, LONG) ;
  12.  
  13. static char szAppName [] = "Record3" ;
  14.  
  15. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  16.                     LPSTR lpszCmdLine, int nCmdShow)
  17.      {
  18.      FARPROC lpDlgProc ;
  19.  
  20.      lpDlgProc = MakeProcInstance (DlgProc, hInstance) ;
  21.      DialogBox (hInstance, szAppName, NULL, lpDlgProc) ;
  22.      FreeProcInstance (lpDlgProc) ;
  23.  
  24.      return 0 ;
  25.      }
  26.  
  27. BOOL FAR PASCAL DlgProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  28.      {
  29.      static BOOL bRecording, bPlaying, bPaused ;
  30.  
  31.      switch (message)
  32.           {
  33.           case WM_COMMAND:
  34.                switch (wParam)
  35.                     {
  36.                     case ID_RECORD_BEG:
  37.                                         // Delete Existing Waveform File
  38.  
  39.                          remove ("record3.wav") ;
  40.  
  41.                                         // Open Waveform Audio and Record
  42.  
  43.                          if (!mciExecute ("open record3.wav alias mysound"))
  44.                               return TRUE ;
  45.  
  46.                          mciExecute ("record mysound") ;
  47.  
  48.                                         // Change Enabled Buttons
  49.  
  50.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_BEG), FALSE);
  51.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_END), TRUE) ;
  52.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_BEG),   FALSE);
  53.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_PAUSE), FALSE);
  54.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_END),   FALSE);
  55.                          SetFocus (GetDlgItem (hwnd, ID_RECORD_END)) ;
  56.  
  57.                          bRecording = TRUE ;
  58.                          return TRUE ;
  59.  
  60.                     case ID_RECORD_END:
  61.                                         // Stop, Save, and Close Recording
  62.  
  63.                          mciExecute ("stop mysound") ;
  64.                          mciExecute ("save mysound") ;
  65.                          mciExecute ("close mysound") ;
  66.  
  67.                                         // Change Enabled Buttons
  68.  
  69.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_BEG), TRUE) ;
  70.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_END), FALSE);
  71.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_BEG),   TRUE) ;
  72.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_PAUSE), FALSE);
  73.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_END),   FALSE);
  74.                          SetFocus (GetDlgItem (hwnd, ID_PLAY_BEG)) ;
  75.  
  76.                          bRecording = FALSE ;
  77.                          return TRUE ;
  78.  
  79.                     case ID_PLAY_BEG:
  80.                                         // Open Waveform Audio and Play
  81.  
  82.                          if (!mciExecute ("open record3.wav alias mysound"))
  83.                               return TRUE ;
  84.  
  85.                          mciExecute ("play mysound") ;
  86.  
  87.                                         // Change Enabled Buttons
  88.  
  89.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_BEG), FALSE);
  90.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_END), FALSE);
  91.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_BEG),   FALSE);
  92.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_PAUSE), TRUE) ;
  93.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_END),   TRUE) ;
  94.                          SetFocus (GetDlgItem (hwnd, ID_PLAY_END)) ;
  95.  
  96.                          bPlaying = TRUE ;
  97.                          return TRUE ;
  98.  
  99.                     case ID_PLAY_PAUSE:
  100.                          if (!bPaused)
  101.                                         // Pause the Play
  102.                               {
  103.                               mciExecute ("pause mysound") ;
  104.                               SetDlgItemText (hwnd, ID_PLAY_PAUSE, "Resume") ;
  105.                               bPaused = TRUE ;
  106.                               }
  107.                          else
  108.                                         // Begin Playing Again
  109.                               {
  110.                               mciExecute ("play mysound") ;
  111.                               SetDlgItemText (hwnd, ID_PLAY_PAUSE, "Pause") ;
  112.                               bPaused = FALSE ;
  113.                               }
  114.  
  115.                          return TRUE ;
  116.  
  117.                     case ID_PLAY_END:
  118.                                         // Stop and Close
  119.  
  120.                          mciExecute ("stop mysound") ;
  121.                          mciExecute ("close mysound") ;
  122.  
  123.                                         // Change Enabled Buttons
  124.  
  125.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_BEG), TRUE) ;
  126.                          EnableWindow (GetDlgItem (hwnd, ID_RECORD_END), FALSE);
  127.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_BEG),   TRUE) ;
  128.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_PAUSE), FALSE);
  129.                          EnableWindow (GetDlgItem (hwnd, ID_PLAY_END),   FALSE);
  130.                          SetFocus (GetDlgItem (hwnd, ID_PLAY_BEG)) ;
  131.  
  132.                          bPlaying = FALSE ;
  133.                          bPaused  = FALSE ;
  134.                          return TRUE ;
  135.                     }
  136.                break ;
  137.  
  138.           case WM_SYSCOMMAND:
  139.                switch (wParam)
  140.                     {
  141.                     case SC_CLOSE:
  142.                          if (bRecording)
  143.                               SendMessage (hwnd, WM_COMMAND, ID_RECORD_END, 0L);
  144.  
  145.                          if (bPlaying)
  146.                               SendMessage (hwnd, WM_COMMAND, ID_PLAY_END, 0L) ;
  147.  
  148.                          EndDialog (hwnd, 0) ;
  149.                          return TRUE ;
  150.                     }
  151.                break ;
  152.           }
  153.      return FALSE ;
  154.      }
  155.